package homework;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
import java.util.Map;

public class MapPractice {
    /**
     * 1. 现在有一个map集合如下：
     * Map<Integer,String> map = new HashMap<Integer, String>();
     * map.put(1, "Amy");
     * map.put(2, "Joe");
     * map.put(3, "Tom");
     * map.put(4, "Susan");
     * 要求：
     * 1.遍历集合，并将序号与对应人名打印。
     * 2.向该map集合中插入一个编码为5姓名为控制台输入的人名的信息
     * 3.移除该map中的编号为4的信息
     * 4.将map集合中编号为3的姓名信息修改为"Tommy"
     * 5.再次遍历经过上述操作后的集合，并将序号与对应人名打印。(注：第一次输出和第二次输出需用空行隔开)
     */
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "Amy");
        map.put(2, "Joe");
        map.put(3, "Tom");
        map.put(4, "Susan");

        //1.遍历集合，并将序号与对应人名打印。
        Set set = map.keySet();
        for (Object key : set) {
            System.out.println(key + ":" + map.get(key));
        }
        System.out.println();

        //2.向该map集合中插入一个编码为5姓名为控制台输入的人名的信息
        System.out.println("请输入人名");
        Scanner sc = new Scanner(System.in);
        String name = sc.next();
        map.put(5, name);

        //3.移除该map中的编号为4的信息
        map.remove(4);

        //4.将map集合中编号为3的姓名信息修改为"Tommy"
        map.replace(3, "Tom", "Tommy");

        //5.再次遍历经过上述操作后的集合，并将序号与对应人名打印。(注：第一次输出和第二次输出需用空行隔开)
        Set set1 = map.keySet();
        for (Object key : set1) {
            System.out.println(key + ":" + map.get(key));
        }

        /**
         * 2. 给定["a", "b", "a", "b", "c", "a", "b", "c", "b"]字符串数组，
         * 然后使用Map的key来保存数组中字符串元素，value保存该字符串元素的出现次数，
         * 最后统计出各字符串元素的出现次数。
         */
        String[] letter = {"a", "b", "a", "b", "c", "a", "b", "c", "b"};
        HashMap<String, Integer> map1 = new HashMap<String, Integer>();
        int countA = 0, countB = 0, countC = 0;
        for (int i = 0; i < letter.length; i++) {
            if (letter[i].equals("a")) {
                countA++;
                map1.put(letter[i], countA);
            } else if (letter[i].equals("b")) {
                countB++;
                map1.put(letter[i], countB);
            } else if (letter[i].equals("c")) {
                countC++;
                map1.put(letter[i], countC);
            }
        }
        System.out.println();
        System.out.println("a出现了" + countA);
        System.out.println("b出现了" + countB);
        System.out.println("c出现了" + countC);
        System.out.println();
        Set set2 = map1.keySet();
        for (Object key1 : set2) {
            System.out.println(key1 + ":" + map1.get(key1));
        }
    }
}
